package com.slsupermarket.common.util;



import lombok.Data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * JWT的载荷类
 */
@Data
public class PayLoad implements Serializable {

    /**
     * 发布者（标准注册信息）
     */
    private String issuer;
    /**
     * 该Token的主题（标准注册信息）
     */
    private String subject;
    /**
     * 接收jwt的一方（标准注册信息）
     * 描述：具体哪些前端可以使用该令牌：pc,app,wx
     */
    private List<String> audience;
    /**
     * 发布时间（标准注册信息）
     */
    private Date issuedAt;
    /**
     * 过期时间（标准注册信息）
     */
    private Date expiresAt;
    /**
     * 令牌的启用时间（标准注册信息）
     * 定义在什么时间之前，该jwt都是不可用的
     */
    private Date notBefore;
    /**
     * 自定义的签名
     * 属于后端需要自定义添加的
     */
    private Map<String, Object> claims;

    public void setAudience(String... audienceArr) {
        //定义一个集合
        List<String> audiences = new ArrayList<>();
        //循环数组，将数组中的每一项添加到集合中去
        if (audienceArr != null) {
            for (String str : audienceArr) {
                audiences.add(str);
            }
            //将集合赋值给 成员变量
            this.audience = audiences;
        }
    }
}
